#include <bits/stdc++.h>
using namespace std;
const int N=1e6+50;
int n;
typedef long long ll;
ll cnt[N];
ll Log2(ll x){
    ll ans=0;
    while(x>=2){
        ans++;
        x/=2;
    }
    return ans;
}
ll Pow(ll a,ll n){
    ll ans=1;
    while(n){
        if(n%2){
            ans=ans*a;
        }
        a*=a;
        n/=2;
    }
    return ans;
}
int main(void){
    scanf("%d",&n);
    ll t=n;
    ll Max=0;
    ll num=1;
    for(int i=2;i*i<=n;i++){
        if(n%i==0){
            while(n%i==0){
                cnt[i]++;
                n/=i;
            }
            num*=i;
            Max=max(Max,cnt[i]);
        }
    }
    //1的情况也要算素数
    cnt[n]++;
    num*=n;
    Max=max(Max,cnt[n]);
    //素数
    if(Max==1){
        printf("%lld 0\n",num);
        return 0;
    }
    ll k=Log2(Max-1)+1;
    //平方数
    bool flag=true;
    for(int i=2;i<=t;i++){
        if(cnt[i]==0){
            continue;
        }
        //printf("%d %lld %lld\n",i,cnt[i],Pow(2,k));
        if(Pow(2,k)!=cnt[i]){
            flag=false;
        }
    }
    if(flag){
        k--;
    }
    printf("%lld %lld\n",num,k+1);
    return 0;
}